package com.sansi.pencilbook.DO;

import lombok.Getter;

/**
 * 功能说明: 查询语句结果
 *
 * @author lsy13
 */
@Getter
public class Result {

    private boolean isSuccess;

    private String msg;

    private int effectRow;

    private Object data;

    public Result(){

    }

    public Result(boolean isSuccess, String msg, int effectRow, Object data) {
        this.isSuccess = isSuccess;
        this.msg = msg;
        this.effectRow = effectRow;
        this.data = data;
    }

    /**
     * 自定义结果
     * @param isSuccess
     * @param msg
     * @param effectRow
     * @return
     */
    public static Result of(boolean isSuccess, String msg, int effectRow, Object data) {
        return new Result(isSuccess, msg, effectRow, data);
    }

    /**
     * 构建成功的结果, 返回SQL语句影响的行数和结果集以及自定义的信息
     * @param msg
     * @param effectRow
     * @param data
     * @return
     */
    public static Result ofSuccess(String msg, int effectRow, Object data) {
        return of(true, msg, effectRow, data);
    }

    /**
     * 构建成功的结果, 返回SQL语句影响的行数和结果集
     * @param effectRow
     * @return
     */
    public static Result ofSuccess(int effectRow, Object data) {
        return of(true, null, effectRow, data);
    }

    /**
     * 构建成功的结果, 返回SQL语句影响的行数
     * @param effectRow
     * @return
     */
    public static Result ofSuccess(int effectRow) {
        return of(true, null, effectRow, null);
    }

    /**
     * 构建成功的结果, 返回SQL语句影像的行数以及自定义的消息
     * @param msg
     * @param effectRow
     * @return
     */
    public static Result ofSuccess(String msg, int effectRow) {
        return of(true, msg, effectRow, null);
    }

    /**
     * 构建成功的结果, 返回SQL语句的结果集
     * @param data
     * @return
     */
    public static Result ofSuccess(Object data) {
        return of(true, null, 0, data);
    }

    /**
     * 构建成功的结果, 返回自定义的信息
     * @param msg
     * @return
     */
    public static Result ofSuccess(String msg) {
        return of(true, msg, 0, null);
    }

    /**
     * 构建失败的结果, 返回出错信息
     * @param msg
     * @return
     */
    public static Result ofFailed(String msg) {
        return of(false, msg, 0, null);
    }

}
